<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Inverse kinematics</title>
<link rel="stylesheet" type="text/css" href="../style.css">
</head>

<body>

<div align="center">
<table class=allEncompassingTable >
 <tr>
  <td >
<p><a href="../index.html" TARGET="_top"><img src="images/homeImg.png"></a></p>



<h1>Kinematics</h1>


<p>CoppeliaSim's kinematics  functionality is very powerful, flexible and allows handling virtually any type of mechanism in inverse kinematics mode (IK mode) or forward kinematics mode (FK mode). It is operated via the <a href="coppeliaKinematicsRoutines.htm">Coppelia Kinematics Routines</a> (a collection of c++ functions that can be embedded into stand-alone applications), wrapped into the <a href="kinematicsPlugin.htm">kinematics plugin</a>.</p>
<p>The problem of IK can be seen as the one of finding the joint values corresponding to some specific position and/or orientation of a given body element (generally the end effector). More generally, it is a transformation from the task space coordinates into the joint space coordinates. For a serial manipulator for instance, the problem would be to find the value of all <a href="joints.htm">joints</a> in the manipulator given the position (and/or orientation) of the end effector. The inverse problem - finding the end effector position and/or orientation given the joint values - is referred to as FK problem and is often perceived as an easier task than IK. This is surely true when dealing with open kinematic chains, but does not hold true for general type mechanical configurations as following one for instance:
</p>

<p align=center><img src="images/inverseKinematics1.jpg"></p>
<p class=imageLabel>[Non-trivial FK problem: knowing the joint values indicated by the arrows, the end effector position and orientation is sought]</p>
<br>

<p>The kinematics functionality is available via the <a href="kinematicsPlugin.htm">kinematics plugin</a>: it allows setting up complex kinematics tasks in a separate IK environment, for nice isolation from the other aspects a simulation model might be involved with (e.g. dynamics, etc.)</p>
<p><em>IK groups</em> containing <em>IK elements</em> are used to handle IK and FK tasks within CoppeliaSim:</p>
<li><a href="basicsOnIkGroupsAndIkElements.htm">Basics on IK groups and IK elements</a></li>
<li><a href="solvingIkAndFk.htm">Solving IK and FK for any type of mechanism</a></li>
<p>Also make sure to have a look at the <a href="inverseKinematicsTutorial.htm">inverse kinematics tutorial</a>, and the various example scenes in folder <em>scenes/kinematics</em>.</p>
<br>
<br>
 </tr>
</table> 
</div>  
  
  
</body>

</html>
